﻿using System;
using System.Collections.Generic;
using System.Text;
using System.Data;

namespace Sinacor.Tools.Dado
{
    public class StatusTraducao :  DadoBase<Sinacor.Tools.Entidade.StatusTraducao>
    {
        public override void incluir(Sinacor.Tools.Entidade.StatusTraducao entidade)
        {
            StringBuilder sql = new StringBuilder(@" INSERT INTO TFWDSTATUSTRADUCAO (CODIGOSTATUSTRADUCAO, DESCRICAOSTATUSTRADUCAO) VALUES (" + entidade.Id.Value.ToString() + ", '" + entidade.Descricao + "')");
            ResourceAccess<Sinacor.Tools.Entidade.StatusTraducao> dados = new ResourceAccess<Sinacor.Tools.Entidade.StatusTraducao>();
            using (IDbCommand cmd = dados.getCommand(sql.ToString(), CommandType.Text))
            {
                cmd.ExecuteNonQuery();
                cmd.Connection.Close();
            }
        }

        public override void alterar(Sinacor.Tools.Entidade.StatusTraducao entidade)
        {
            StringBuilder sql = new StringBuilder(@" UPDATE TFWDSTATUSTRADUCAO SET DESCRICAOSTATUSTRADUCAO = '" + entidade.Descricao + "' where CODIGOSTATUSTRADUCAO = " + entidade.Id.Value.ToString());
            ResourceAccess<Sinacor.Tools.Entidade.StatusTraducao> dados = new ResourceAccess<Sinacor.Tools.Entidade.StatusTraducao>();
            using (IDbCommand cmd = dados.getCommand(sql.ToString(), CommandType.Text))
            {
                cmd.ExecuteNonQuery();
                cmd.Connection.Close();
            }
        }

        public override void deletar(Sinacor.Tools.Entidade.StatusTraducao entidade)
        {
            StringBuilder sql = new StringBuilder(@" DELETE FROM TFWDSTATUSTRADUCAO WHERE CODIGOSTATUSTRADUCAO = " + entidade.Id.Value.ToString());
            ResourceAccess<Sinacor.Tools.Entidade.StatusTraducao> dados = new ResourceAccess<Sinacor.Tools.Entidade.StatusTraducao>();
            using (IDbCommand cmd = dados.getCommand(sql.ToString(), CommandType.Text))
            {
                cmd.ExecuteNonQuery();
                cmd.Connection.Close();
            }
        }

        public override List<Sinacor.Tools.Entidade.StatusTraducao> consultar(Sinacor.Tools.Entidade.StatusTraducao entidade)
        {
            StringBuilder sql = new StringBuilder(@" SELECT CODIGOSTATUSTRADUCAO As ""Id"", DESCRICAOSTATUSTRADUCAO As ""Descricao"" FROM TFWDSTATUSTRADUCAO WHERE (1=1) ");
            if (entidade.Id >= 0)
            {
                sql.Append(" AND CODIGOSTATUSTRADUCAO = " + entidade.Id.Value.ToString());
            }

            if (!string.IsNullOrEmpty(entidade.Descricao))
            {
                sql.Append(" AND DESCRICAOSTATUSTRADUCAO LIKE '%" + entidade.Descricao + "%'");

            }

            ResourceAccess<Sinacor.Tools.Entidade.StatusTraducao> dados = new ResourceAccess<Sinacor.Tools.Entidade.StatusTraducao>();
            IDbCommand cmd = dados.getCommand(sql.ToString(), CommandType.Text);
            return dados.getListResult(cmd);
        }

        public object jaEstaCadastrado(Sinacor.Tools.Entidade.StatusTraducao entidade)
        {
            object retorno = null;
            StringBuilder sql = new StringBuilder(@" SELECT 1 FROM TFWDSTATUSTRADUCAO WHERE (1=1) AND DESCRICAOStatusTraducao = '" + entidade.Descricao.Trim() + "'");
            ResourceAccess<Sinacor.Tools.Entidade.StatusTraducao> dados = new ResourceAccess<Sinacor.Tools.Entidade.StatusTraducao>();
            using (IDbCommand cmd = dados.getCommand(sql.ToString(), CommandType.Text))
            {
                retorno = cmd.ExecuteScalar();
                cmd.Connection.Close();
            }
            return retorno;
        }

        public object buscarProximoId()
        {
            object retorno = null;
            StringBuilder sql = new StringBuilder(@" SELECT MAX(CODIGOStatusTraducao) + 1 FROM TFWDSTATUSTRADUCAO ");
            ResourceAccess<Sinacor.Tools.Entidade.StatusTraducao> dados = new ResourceAccess<Sinacor.Tools.Entidade.StatusTraducao>();
            using (IDbCommand cmd = dados.getCommand(sql.ToString(), CommandType.Text))
            {
                retorno = cmd.ExecuteScalar();
                if (retorno == DBNull.Value)
                    retorno = null;
                cmd.Connection.Close();
            }
            return retorno;
        }

        public object jaPossuiTraducao(Sinacor.Tools.Entidade.StatusTraducao entidade)
        {
            object retorno = null;
            StringBuilder sql = new StringBuilder(@" SELECT COUNT(CODIGOMENSAGEM) FROM TFWDTRADUCAOMENSAGEM WHERE CODIGOSTATUSTRADUCAO = '" + entidade.Id.ToString() + "'");
            ResourceAccess<Sinacor.Tools.Entidade.StatusTraducao> dados = new ResourceAccess<Sinacor.Tools.Entidade.StatusTraducao>();
            using (IDbCommand cmd = dados.getCommand(sql.ToString(), CommandType.Text))
            {
                retorno = cmd.ExecuteScalar();
                cmd.Connection.Close();
            }
            return retorno;
        }
    }
}
